home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MENU_UTL / OMENU / OMENU.INT < prev    next >
Text File  |  1993-10-10  |  6KB  |  131 lines

  1. UNIT OMENU;
  2. {$DEFINE FGI}                   {Define FGI if using the Fastgraph
  3.                                  routines from Ted Gruber Software.
  4.                                  Otherwise, use the Borland BGI }
  5. {$A+     + Align Data on}
  6. {$B-     - Boolean Eval short}
  7. {$D+     + Debug info on}
  8. {$E+     + 8087 Emulation on}
  9. {$F+     + Force far calls on}
  10. {$G+     + Generate 286 code}
  11. {$I+     + IO checking on}
  12. {$L+     + Local symbols on}
  13. {$N-     - Numeric Processing off}
  14. {$O-     - Overlays off}
  15. {$R+     + Range checks on}
  16. {$S+     + Stack checks on}
  17. {$V-     - Relaxed String checks}
  18. {$X+     + Extended Syntax on}
  19.  
  20. interface
  21. const
  22.     MaxItems              = 25;                 { max items on a menu }
  23.     ParseDelimiter        : char    = '|';
  24.     ShadowOn              = true;               { use shadow booleans }
  25.     ShadowOff             = false;
  26.     UserShadWt            : integer =  5;       { default shadow width }
  27.     BorderOn              = true;               { use border booleans }
  28.     BorderOff             = false;
  29.     black                 : integer =  0;
  30.     blue                  : integer =  1;
  31.     green                 : integer =  2;
  32.     cyan                  : integer =  3;
  33.     red                   : integer =  4;
  34.     magenta               : integer =  5;
  35.     brown                 : integer =  6;
  36.     gray                  : integer =  7;
  37.     dgray                 : integer =  8;
  38.     lblue                 : integer =  9;
  39.     lgreen                : integer = 10;
  40.     lcyan                 : integer = 11;
  41.     lred                  : integer = 12;
  42.     lmagenta              : integer = 13;
  43.     yellow                : integer = 14;
  44.     white                 : integer = 15;
  45.  
  46.  
  47. {The following 8 procedures are not objects ! }
  48.   procedure GraphInit;                { init graphics environment }
  49.   procedure GraphDone;                { return to text mode }
  50.   procedure GGotoxy(x,y:integer);     { gotoxy }
  51.   procedure GWriteXy(x,y:integer;s:string;bg,fg:integer);
  52.             {write at xy using text coordinates}
  53.   procedure GWritePXy(x,y:integer;s:string;bg,fg:integer);
  54.             {Write at xy using pixel coordinates (640x480}
  55.   procedure GWriteXyClip(x,y:integer;s:string;Bg,Fg,clp:integer);
  56.             {write at text-xy and truncate string to fit }
  57.   procedure GClrScr(color:integer);
  58.             { clear the screen in any color }
  59.  
  60. type
  61.    TMenuParms = record                  { record to hold parms for }
  62.      Menu,x1,y1,x2,y2,Nbg,NFg,HBg,HFg,  { each menu you set up }
  63.           px1,px2,py1,py2,
  64.        Border,shadow,NumItems,Highlight: integer;
  65.      BordOn,ShadOn                     : boolean;
  66.      AStr                              : string;
  67.      end;
  68.  
  69.   Ohmenu = object
  70.     onscreen                           : boolean;  {is menu now on screen?}
  71.     MenuNumber                         : integer;
  72.     MenuParms                          : TMenuParms;
  73.     TArray : array[1..MaxItems] of string[105];    {up to 25 items}
  74.     Buffer                             : pointer;  {ptr to hold image buffer}
  75.     Buffersize                         : longint;  {size of image buffer}
  76.     Result                             : integer;  {user keypress Result }
  77.     Choice                             : integer;  {user menu choice }
  78.     BuffW,BuffH                        : integer;  {buffersize}
  79.     EraseOK                            : boolean;  {can erase menu?}
  80.     ShadWt                             : integer;  {shadow width}
  81.  
  82.     constructor Init;
  83.     destructor  Done;
  84.     procedure   ParseText;                         { get the menu items }
  85.     procedure   UseMenu(m:integer);    virtual;    { items delimited by '|' }
  86.     procedure   ShowMenu;              virtual;    { called from UseMenu }
  87.     procedure   EraseMenu;                         { erase, free buffer }
  88.     procedure   MakeBuffer;                        { save screen on heap }
  89.     function    GetChoice : integer;               { returns user choice }
  90.     end;
  91.   OVMenu =  object (OHMenu)
  92.     constructor Init;
  93.     procedure   UseMenu(m:integer);   virtual;
  94.     procedure   ShowMenu;             virtual;
  95.    end;
  96.  
  97.  
  98.   OHVMenu = object
  99.     HVResult    : longint;
  100.     HResult     : shortint;
  101.     VResult     : shortint;
  102.     VertMenus   : shortint;
  103.     MenuArray   : array[0..25] of TMenuparms;
  104.     HMenu       : OHMenu;
  105.     VMenu       : OVMenu;
  106.     constructor Init;
  107.     destructor  done;
  108.     procedure   SetHorItems(
  109.                 x1,y1,x2,y2,Nbg,NFg,HBg,HFg,
  110.                 Border,shadow,NumItems,Highlight:integer;
  111.                 BordOn,ShadOn:boolean;
  112.                 AStr:string);
  113.     procedure   PutHParms(num:integer);
  114.     procedure   SetVerItems(
  115.                 menu,x1,y1,x2,y2,Nbg,NFg,HBg,HFg,
  116.                 Border,shadow,NumItems,Highlight:integer;
  117.                 BordOn,ShadOn:boolean;
  118.                 AStr:string);
  119.     procedure   PutVParms(num:integer);
  120.     function    GetHResult:shortint;               virtual;
  121.     function    GetVResult:shortint;               virtual;
  122.     function    GetHVResult:longint;               virtual;
  123.     function    GetHChoice:shortint;               virtual;
  124.     function    GetVChoice:shortint;               virtual;
  125.     function    GetHVChoice:longint;               virtual;
  126.     procedure   UseMenu;                           virtual;
  127.     function    MenuResult(EraseH,EraseV:boolean):integer;
  128.     end;
  129.  
  130. {****************************** implementation *************************}
  131.